package com.lxbw.chain.model;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.Callable;
import org.web3j.abi.EventEncoder;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Address;
import org.web3j.abi.datatypes.Bool;
import org.web3j.abi.datatypes.Event;
import org.web3j.abi.datatypes.Function;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.Utf8String;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.abi.datatypes.generated.Uint32;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameter;
import org.web3j.protocol.core.RemoteCall;
import org.web3j.protocol.core.methods.request.EthFilter;
import org.web3j.protocol.core.methods.response.Log;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.tuples.generated.Tuple10;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;
import rx.Observable;
import rx.functions.Func1;

/**
 * <p>Auto generated code.
 * <p><strong>Do not modify!</strong>
 * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
 * or the org.web3j.codegen.SolidityFunctionWrapperGenerator in the 
 * <a href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
 *
 * <p>Generated with web3j version 3.4.0.
 */
public class KittyCore extends Contract {
    private static final String BINARY = "0x606060409081526002805460a060020a60ff02191690556101c090519081016040908152603c82526078602083015261012c9082015261025860608201526107086080820152610e1060a0820152611c2060c082015261384060e082015261708061010082015261e100610120820152620151806101408201526202a3006101608201526205460061018082015262093a806101a0820152620000a790600390600e6200055b565b5060408051908101604052600d81527f43727970746f4b697474696573000000000000000000000000000000000000006020820152600a908051620000f1929160200190620005fe565b5060408051908101604052600281527f434b0000000000000000000000000000000000000000000000000000000000006020820152600b9080516200013b929160200190620005fe565b5066038d7ea4c68000600c5561138860105561c350601155662386f26fc100006012556201518060135534156200017157600080fd5b6002805460008054600160a060020a033316600160a060020a03199182168117835560a060020a60ff0219909316740100000000000000000000000000000000000000001716909117909155620001dc908080600019816401000000006200230b620001e382021704565b506200075e565b6000620001ef6200067f565b600063ffffffff8811156200020357600080fd5b63ffffffff8711156200021557600080fd5b61ffff8611156200022557600080fd5b61010060405190810160409081528682526001604060020a0342166020830152600090820181905263ffffffff808b1660608401528916608083015260a0820181905260c082015261ffff871660e082015260058054919350600191808301620002908382620006c3565b6000928352602090922085916002020181518155602082015160018201805467ffffffffffffffff19166001604060020a039290921691909117905560408201518160010160086101000a8154816001604060020a0302191690836001604060020a0316021790555060608201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060c082015181600101601c6101000a81548161ffff021916908361ffff16021790555060e08201516001909101805461ffff929092167e0100000000000000000000000000000000000000000000000000000000000002600160f060020a039092169190911790555003905063ffffffff811115620003ec57600080fd5b83600160a060020a03167f0a5311bd2a6608f08a180df2ee7c5946819a649b204b554bb8e39825b2c50ad582846060015163ffffffff16856080015163ffffffff1686516040518085815260200184815260200183815260200182815260200194505050505060405180910390a2620004766000858364010000000062001fbc6200048182021704565b979650505050505050565b600160a060020a03808316600081815260076020908152604080832080546001019055858352600690915290208054600160a060020a03191690911790558316156200051557600160a060020a03831660009081526007602090815260408083208054600019019055838352600982528083208054600160a060020a03199081169091556008909252909120805490911690555b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600283019183908215620005ec5791602002820160005b83821115620005b857835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030262000572565b8015620005ea5782816101000a81549063ffffffff0219169055600401602081600301049283019260010302620005b8565b505b50620005fa929150620006f7565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200064157805160ff191683800117855562000671565b8280016001018555821562000671579182015b828111156200067157825182559160200191906001019062000654565b50620005fa9291506200071e565b6101006040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e082015290565b815481835581811511620006f257600202816002028360005260206000209182019101620006f291906200073b565b505050565b6200071b91905b80821115620005fa57805463ffffffff19168155600101620006fe565b90565b6200071b91905b80821115620005fa576000815560010162000725565b6200071b91905b80821115620005fa576000808255600182015560020162000742565b61298e806200076e6000396000f30060606040526004361061026e5763ffffffff60e060020a600035041663030c474181146102a65780630519ce79146102c857806305e45546146102f757806306fdde031461031c578063095ea7b3146103a65780630a0f8168146103c85780631051db34146103db57806314001f4c1461040257806318160ddd1461042157806321717ebf1461043457806323b872dd1461044757806324e7a38a1461046f57806327d7874c1461048e5780632ba73c15146104ad5780633d7d3f5a146104cc5780633f4ba83a146104eb578063404d0e3e146104fe57806346116e6f1461051157806346d22c70146105275780634707f44f14610540578063481af3d3146105625780634ad8c938146105785780634b85fd55146105975780634dfff04f146105ad5780634e0a3379146105cf57806356129134146105ee5780635c975abb146106105780635fd8c710146106235780636352211e146106365780636af04a571461064c5780636fbde40d1461065f5780637004fb841461067e57806370a082311461069757806371587988146106b65780638456cb59146106d557806388c2a0bf146106e857806391876e57146106fe57806395d89b41146107115780639d6fac6f14610724578063a45f4bfc14610753578063a9059cbb14610769578063ae4d0ff71461078b578063b047fb501461079e578063b0c35c05146107b1578063b5319335146107c4578063c3bea9af146107d7578063d3e6f49f146107ed578063e6cbe35114610803578063e98b7f4d14610816578063eb845c1714610884578063ed60ade614610897578063f1ca9410146108a5578063f2b47d52146108b8578063f7d8c883146108cb575b600e5433600160a060020a03908116911614806102995750600f5433600160a060020a039081169116145b15156102a457600080fd5b005b34156102b157600080fd5b6102a4600435600160a060020a03602435166108d9565b34156102d357600080fd5b6102db61092f565b604051600160a060020a03909116815260200160405180910390f35b341561030257600080fd5b61030a61093e565b60405190815260200160405180910390f35b341561032757600080fd5b61032f610944565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561036b578082015183820152602001610353565b50505050905090810190601f1680156103985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103b157600080fd5b6102a4600160a060020a03600435166024356109e2565b34156103d357600080fd5b6102db610a5d565b34156103e657600080fd5b6103ee610a6c565b604051901515815260200160405180910390f35b341561040d57600080fd5b6102a4600160a060020a0360043516610a72565b341561042c57600080fd5b61030a610b12565b341561043f57600080fd5b6102db610b1c565b341561045257600080fd5b6102a4600160a060020a0360043581169060243516604435610b2b565b341561047a57600080fd5b6102a4600160a060020a0360043516610b7c565b341561049957600080fd5b6102a4600160a060020a0360043516610c1c565b34156104b857600080fd5b6102a4600160a060020a0360043516610c6e565b34156104d757600080fd5b6102a4600435602435604435606435610cc0565b34156104f657600080fd5b6102a4610d88565b341561050957600080fd5b61030a610e20565b341561051c57600080fd5b6102db600435610e26565b341561053257600080fd5b6103ee600435602435610e41565b341561054b57600080fd5b61030a600160a060020a0360043516602435610ec3565b341561056d57600080fd5b6102db600435610f1d565b341561058357600080fd5b6102a4600435602435604435606435610f38565b34156105a257600080fd5b6102a4600435610ffe565b34156105b857600080fd5b6102a4600160a060020a036004351660243561101e565b34156105da57600080fd5b6102a4600160a060020a0360043516611078565b34156105f957600080fd5b6102a4600435600160a060020a03602435166110ca565b341561061b57600080fd5b6103ee611146565b341561062e57600080fd5b6102a4611156565b341561064157600080fd5b6102db6004356111aa565b341561065757600080fd5b6102db6111d3565b341561066a57600080fd5b6102a4600160a060020a03600435166111e2565b341561068957600080fd5b6102a4600435602435611282565b34156106a257600080fd5b61030a600160a060020a036004351661146b565b34156106c157600080fd5b6102a4600160a060020a0360043516611486565b34156106e057600080fd5b6102a4611514565b34156106f357600080fd5b61030a6004356115a0565b341561070957600080fd5b6102a46117fc565b341561071c57600080fd5b61032f6118b3565b341561072f57600080fd5b61073a60043561191e565b60405163ffffffff909116815260200160405180910390f35b341561075e57600080fd5b6102db60043561194b565b341561077457600080fd5b6102a4600160a060020a0360043516602435611966565b341561079657600080fd5b61030a6119b2565b34156107a957600080fd5b6102db6119b8565b34156107bc57600080fd5b61030a6119c7565b34156107cf57600080fd5b61030a6119cd565b34156107e257600080fd5b6102a46004356119d3565b34156107f857600080fd5b6103ee600435611ac0565b341561080e57600080fd5b6102db611b89565b341561082157600080fd5b61082c600435611b98565b6040519915158a5297151560208a01526040808a01979097526060890195909552608088019390935260a087019190915260c086015260e0850152610100840152610120830191909152610140909101905180910390f35b341561088f57600080fd5b61030a611cf9565b6102a4600435602435611cff565b34156108b057600080fd5b61030a611ed5565b34156108c357600080fd5b6102db611edb565b6102a4600435602435611eea565b60025433600160a060020a039081169116146108f457600080fd5b60025460a060020a900460ff161561090b57600080fd5b6109153083611f9c565b151561092057600080fd5b61092b308284611fbc565b5050565b600154600160a060020a031681565b60145481565b600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109da5780601f106109af576101008083540402835291602001916109da565b820191906000526020600020905b8154815290600101906020018083116109bd57829003601f168201915b505050505081565b60025460a060020a900460ff16156109f957600080fd5b610a033382611f9c565b1515610a0e57600080fd5b610a188183612095565b8082600160a060020a031633600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600054600160a060020a031681565b60015b90565b6000805433600160a060020a03908116911614610a8e57600080fd5b5080600160a060020a0381166376190f8f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610acd57600080fd5b5af11515610ada57600080fd5b505050604051805190501515610aef57600080fd5b600f8054600160a060020a031916600160a060020a039290921691909117905550565b6005546000190190565b600f54600160a060020a031681565b60025460a060020a900460ff1615610b4257600080fd5b610b4c33826120c3565b1515610b5757600080fd5b610b618382611f9c565b1515610b6c57600080fd5b610b77838383611fbc565b505050565b6000805433600160a060020a03908116911614610b9857600080fd5b5080600160a060020a0381166354c15b826040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610bd757600080fd5b5af11515610be457600080fd5b505050604051805190501515610bf957600080fd5b600d8054600160a060020a031916600160a060020a039290921691909117905550565b60005433600160a060020a03908116911614610c3757600080fd5b600160a060020a0381161515610c4c57600080fd5b60008054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a03908116911614610c8957600080fd5b600160a060020a0381161515610c9e57600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60025460a060020a900460ff1615610cd757600080fd5b610ce13385611f9c565b1515610cec57600080fd5b600e54610d03908590600160a060020a0316612095565b600e54600160a060020a03166327ebe40a858585853360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b1515610d7257600080fd5b5af11515610d7f57600080fd5b50505050505050565b60005433600160a060020a03908116911614610da357600080fd5b60025460a060020a900460ff161515610dbb57600080fd5b600e54600160a060020a03161515610dd257600080fd5b600f54600160a060020a03161515610de957600080fd5b600d54600160a060020a03161515610e0057600080fd5b601654600160a060020a031615610e1657600080fd5b610e1e6120e3565b565b60115481565b600960205260009081526040902054600160a060020a031681565b60008080808511610e5157600080fd5b60008411610e5e57600080fd5b6005805486908110610e6c57fe5b90600052602060002090600202019150600584815481101515610e8b57fe5b90600052602060002090600202019050610ea782868387612136565b8015610eb85750610eb884866122b6565b92505b505092915050565b60008060015b610ed1610b12565b8111610f1857600081815260066020526040902054600160a060020a0386811691161415610f105783821415610f0957809250610ebb565b6001909101905b600101610ec9565b600080fd5b600860205260009081526040902054600160a060020a031681565b60025460a060020a900460ff1615610f4f57600080fd5b610f593385611f9c565b1515610f6457600080fd5b610f6d84611ac0565b1515610f7857600080fd5b600f54610f8f908590600160a060020a0316612095565b600f54600160a060020a03166327ebe40a858585853360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b1515610d7257600080fd5b60025433600160a060020a0390811691161461101957600080fd5b600c55565b60025460a060020a900460ff161561103557600080fd5b61103f3382611f9c565b151561104a57600080fd5b60009081526009602052604090208054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461109357600080fd5b600160a060020a03811615156110a857600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b60025433600160a060020a039081169116146110e557600080fd5b600160a060020a03811615156111035750600254600160a060020a03165b6010546014541061111357600080fd5b6011546015541061112357600080fd5b601480546001908101909155601580549091019055610b7760008080858561230b565b60025460a060020a900460ff1681565b60015433600160a060020a0390811691161461117157600080fd5b600154600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610e1e57600080fd5b600081815260066020526040902054600160a060020a03168015156111ce57600080fd5b919050565b601654600160a060020a031681565b6000805433600160a060020a039081169116146111fe57600080fd5b5080600160a060020a0381166385b861886040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561123d57600080fd5b5af1151561124a57600080fd5b50505060405180519050151561125f57600080fd5b600e8054600160a060020a031916600160a060020a039290921691909117905550565b600254600090819060a060020a900460ff161561129e57600080fd5b6112a83385611f9c565b15156112b357600080fd5b6112bd83856122b6565b15156112c857600080fd5b60058054859081106112d657fe5b9060005260206000209060020201915061137b8261010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612591565b151561138657600080fd5b600580548490811061139457fe5b906000526020600020906002020190506114398161010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612591565b151561144457600080fd5b61145082858386612136565b151561145b57600080fd5b61146584846125bf565b50505050565b600160a060020a031660009081526007602052604090205490565b60005433600160a060020a039081169116146114a157600080fd5b60025460a060020a900460ff1615156114b957600080fd5b60168054600160a060020a031916600160a060020a0383161790557f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051600160a060020a03909116815260200160405180910390a150565b60025433600160a060020a039081169116148061153f575060005433600160a060020a039081169116145b80611558575060015433600160a060020a039081169116145b151561156357600080fd5b60025460a060020a900460ff161561157a57600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a179055565b600080600080600080600080600260149054906101000a900460ff161515156115c857600080fd5b600580548a9081106115d657fe5b60009182526020909120600290910201600181015490975067ffffffffffffffff16151561160357600080fd5b6116988761010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e08201526126f0565b15156116a357600080fd5b60018701546005805460c060020a90920463ffffffff16975090879081106116c757fe5b600091825260209091206001808a015460029093029091019081015490965061ffff60f060020a9283900481169650919004168490111561171557600185015460f060020a900461ffff1693505b600d5487548654600160a060020a0390921691638d8b1b88919060405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b151561176a57600080fd5b5af1151561177757600080fd5b505050604051805160008b81526006602052604090205460018a810154929650600160a060020a0390911694506117c692508b9160c060020a900463ffffffff1690870161ffff16868661230b565b60019790970180547bffffffff000000000000000000000000000000000000000000000000191690555094979650505050505050565b60025433600160a060020a0390811691161461181757600080fd5b600e54600160a060020a0316635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561185657600080fd5b5af1151561186357600080fd5b5050600f54600160a060020a03169050635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156118a657600080fd5b5af11515610b7757600080fd5b600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109da5780601f106109af576101008083540402835291602001916109da565b600381600e811061192b57fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b600660205260009081526040902054600160a060020a031681565b60025460a060020a900460ff161561197d57600080fd5b600160a060020a038216151561199257600080fd5b61199c3382611f9c565b15156119a757600080fd5b61092b338383611fbc565b60125481565b600254600160a060020a031681565b600c5481565b60105481565b60025460009033600160a060020a039081169116146119f157600080fd5b60115460155410611a0157600080fd5b611a106000806000853061230b565b600e54909150611a2a908290600160a060020a0316612095565b600e54600160a060020a03166327ebe40a82611a4461271e565b60006013543060405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b1515611aa357600080fd5b5af11515611ab057600080fd5b5050601580546001019055505050565b600080808311611acf57600080fd5b6005805484908110611add57fe5b90600052602060002090600202019050611b828161010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612591565b9392505050565b600e54600160a060020a031681565b600080600080600080600080600080600060058c815481101515611bb857fe5b906000526020600020906002020190508060010160189054906101000a900463ffffffff1663ffffffff16600014159a50428160010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115995080600101601c9054906101000a900461ffff1661ffff1698508060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1697508060010160189054906101000a900463ffffffff1663ffffffff1696508060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1695508060010160109054906101000a900463ffffffff1663ffffffff1694508060010160149054906101000a900463ffffffff1663ffffffff16935080600101601e9054906101000a900461ffff1661ffff16925080600001549150509193959799509193959799565b60135481565b60025460009081908190819060a060020a900460ff1615611d1f57600080fd5b611d293386611f9c565b1515611d3457600080fd5b611d3d85611ac0565b1515611d4857600080fd5b611d5285876127b4565b1515611d5d57600080fd5b600f54600160a060020a031663c55d0f568760405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611da557600080fd5b5af11515611db257600080fd5b5050506040518051600c5490955034945060009350850184109050611ddd57600c5483039250600191505b600f54600160a060020a031663454a2ab3848860405160e060020a63ffffffff851602815260048101919091526024016000604051808303818588803b1515611e2557600080fd5b5af11515611e3257600080fd5b50505050611e4c8563ffffffff168763ffffffff166125bf565b8115611ecd576005805486908110611e6057fe5b906000526020600020906002020190507f1c2771fbe007c332593b3adcacf033ce4a97f9cb1f6dd81e40d9a42c66d2e65c858260010160089054906101000a900467ffffffffffffffff1660405191825267ffffffffffffffff1660208201526040908101905180910390a15b505050505050565b60155481565b600d54600160a060020a031681565b60025460009060a060020a900460ff1615611f0457600080fd5b600c54341015611f1357600080fd5b611f1d8383611282565b6005805484908110611f2b57fe5b906000526020600020906002020190507f1c2771fbe007c332593b3adcacf033ce4a97f9cb1f6dd81e40d9a42c66d2e65c838260010160089054906101000a900467ffffffffffffffff1660405191825267ffffffffffffffff1660208201526040908101905180910390a1505050565b600090815260066020526040902054600160a060020a0391821691161490565b600160a060020a03808316600081815260076020908152604080832080546001019055858352600690915290208054600160a060020a031916909117905583161561204f57600160a060020a03831660009081526007602090815260408083208054600019019055838352600982528083208054600160a060020a03199081169091556008909252909120805490911690555b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000918252600860205260409091208054600160a060020a031916600160a060020a03909216919091179055565b600090815260086020526040902054600160a060020a0391821691161490565b60005433600160a060020a039081169116146120fe57600080fd5b60025460a060020a900460ff16151561211657600080fd5b6002805474ff000000000000000000000000000000000000000019169055565b600081841415612148575060006122ae565b6001850154608060020a900463ffffffff168214806121775750600185015460a060020a900463ffffffff1682145b15612184575060006122ae565b6001830154608060020a900463ffffffff168414806121b35750600183015460a060020a900463ffffffff1684145b156121c0575060006122ae565b6001830154608060020a900463ffffffff1615806121ed57506001850154608060020a900463ffffffff16155b156121fa575060016122ae565b60018581015490840154608060020a9182900463ffffffff90811692909104161480612245575060018086015490840154608060020a900463ffffffff90811660a060020a90920416145b15612252575060006122ae565b6001808601549084015460a060020a900463ffffffff908116608060020a90920416148061229d57506001858101549084015460a060020a9182900463ffffffff9081169290910416145b156122aa575060006122ae565b5060015b949350505050565b6000818152600660205260408082205484835290822054600160a060020a03918216911680821480610eb85750600085815260096020526040902054600160a060020a03908116908316149250505092915050565b60006123156128d6565b600063ffffffff88111561232857600080fd5b63ffffffff87111561233957600080fd5b61ffff86111561234857600080fd5b610100604051908101604090815286825267ffffffffffffffff42166020830152600090820181905263ffffffff808b1660608401528916608083015260a0820181905260c082015261ffff871660e0820152600580549193506001918083016123b2838261291a565b6000928352602090922085916002020181518155602082015160018201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060c082015181600101601c6101000a81548161ffff021916908361ffff16021790555060e08201516001909101805461ffff9290921660f060020a027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555003905063ffffffff81111561250c57600080fd5b83600160a060020a03167f0a5311bd2a6608f08a180df2ee7c5946819a649b204b554bb8e39825b2c50ad582846060015163ffffffff16856080015163ffffffff1686516040518085815260200184815260200183815260200182815260200194505050505060405180910390a261258660008583611fbc565b979650505050505050565b60008160a0015163ffffffff161580156125b9575042826040015167ffffffffffffffff1611155b92915050565b6000806005838154811015156125d157fe5b906000526020600020906002020191506005848154811015156125f057fe5b600091825260209091206002909102016001810180547bffffffff000000000000000000000000000000000000000000000000191660c060020a63ffffffff871602179055905061264082612803565b61264981612803565b60008481526009602090815260408083208054600160a060020a031990811690915586845281842080549091169055868352600690915290819020547f6b4808987a5cecdf67d54ca5dc20664fafca80ef7195097800c12549245ab20d91600160a060020a039091169086908690518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a150505050565b60008160a0015163ffffffff16158015906125b9575042826040015167ffffffffffffffff16111592915050565b600e5460009081908190600160a060020a031663eac9d94c6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561276457600080fd5b5af1151561277157600080fd5b50505060405180519250506fffffffffffffffffffffffffffffffff821061279857600080fd5b60028204820190506012548110156125b9575060125492915050565b60008060006005858154811015156127c857fe5b906000526020600020906002020191506005848154811015156127e757fe5b90600052602060002090600202019050610eb882868387612136565b600181015460039060e060020a900461ffff16600e811061282057fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1642018160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600d81600101601c9054906101000a900461ffff1661ffff1610156128d3576001818101805461ffff60e060020a8083048216909401169092027fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555b50565b6101006040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e082015290565b815481835581811511610b7757600083815260209020610b7791610a6f9160029182028101918502015b8082111561295e5760008082556001820155600201612944565b50905600a165627a7a72305820918376fde1642d0d2ab3fdc5ce85132e8d774b083120b5efbad517ec1ecc41e40029";

    public static final String FUNC_RESCUELOSTKITTY = "rescueLostKitty";

    public static final String FUNC_CFOADDRESS = "cfoAddress";

    public static final String FUNC_PROMOCREATEDCOUNT = "promoCreatedCount";

    public static final String FUNC_NAME = "name";

    public static final String FUNC_APPROVE = "approve";

    public static final String FUNC_CEOADDRESS = "ceoAddress";

    public static final String FUNC_IMPLEMENTSERC721 = "implementsERC721";

    public static final String FUNC_SETSIRINGAUCTIONADDRESS = "setSiringAuctionAddress";

    public static final String FUNC_TOTALSUPPLY = "totalSupply";

    public static final String FUNC_SIRINGAUCTION = "siringAuction";

    public static final String FUNC_TRANSFERFROM = "transferFrom";

    public static final String FUNC_SETGENESCIENCEADDRESS = "setGeneScienceAddress";

    public static final String FUNC_SETCEO = "setCEO";

    public static final String FUNC_SETCOO = "setCOO";

    public static final String FUNC_CREATESALEAUCTION = "createSaleAuction";

    public static final String FUNC_GEN0CREATIONLIMIT = "gen0CreationLimit";

    public static final String FUNC_SIREALLOWEDTOADDRESS = "sireAllowedToAddress";

    public static final String FUNC_CANBREEDWITH = "canBreedWith";

    public static final String FUNC_TOKENSOFOWNERBYINDEX = "tokensOfOwnerByIndex";

    public static final String FUNC_KITTYINDEXTOAPPROVED = "kittyIndexToApproved";

    public static final String FUNC_CREATESIRINGAUCTION = "createSiringAuction";

    public static final String FUNC_SETAUTOBIRTHFEE = "setAutoBirthFee";

    public static final String FUNC_APPROVESIRING = "approveSiring";

    public static final String FUNC_SETCFO = "setCFO";

    public static final String FUNC_CREATEPROMOKITTY = "createPromoKitty";

    public static final String FUNC_PAUSED = "paused";

    public static final String FUNC_WITHDRAWBALANCE = "withdrawBalance";

    public static final String FUNC_OWNEROF = "ownerOf";

    public static final String FUNC_NEWCONTRACTADDRESS = "newContractAddress";

    public static final String FUNC_SETSALEAUCTIONADDRESS = "setSaleAuctionAddress";

    public static final String FUNC_BREEDWITH = "breedWith";

    public static final String FUNC_BALANCEOF = "balanceOf";

    public static final String FUNC_PAUSE = "pause";

    public static final String FUNC_GIVEBIRTH = "giveBirth";

    public static final String FUNC_WITHDRAWAUCTIONBALANCES = "withdrawAuctionBalances";

    public static final String FUNC_SYMBOL = "symbol";

    public static final String FUNC_COOLDOWNS = "cooldowns";

    public static final String FUNC_KITTYINDEXTOOWNER = "kittyIndexToOwner";

    public static final String FUNC_TRANSFER = "transfer";

    public static final String FUNC_GEN0STARTINGPRICE = "gen0StartingPrice";

    public static final String FUNC_COOADDRESS = "cooAddress";

    public static final String FUNC_AUTOBIRTHFEE = "autoBirthFee";

    public static final String FUNC_PROMOCREATIONLIMIT = "promoCreationLimit";

    public static final String FUNC_CREATEGEN0AUCTION = "createGen0Auction";

    public static final String FUNC_ISREADYTOBREED = "isReadyToBreed";

    public static final String FUNC_SALEAUCTION = "saleAuction";

    public static final String FUNC_GEN0AUCTIONDURATION = "gen0AuctionDuration";

    public static final String FUNC_BIDONSIRINGAUCTION = "bidOnSiringAuction";

    public static final String FUNC_GEN0CREATEDCOUNT = "gen0CreatedCount";

    public static final String FUNC_GENESCIENCE = "geneScience";

    public static final String FUNC_BREEDWITHAUTO = "breedWithAuto";

    public static final String FUNC_SETNEWADDRESS = "setNewAddress";

    public static final String FUNC_GETKITTY = "getKitty";

    public static final String FUNC_UNPAUSE = "unpause";

    public static final Event PREGNANT_EVENT = new Event("Pregnant", 
            Arrays.<TypeReference<?>>asList(),
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event AUTOBIRTH_EVENT = new Event("AutoBirth", 
            Arrays.<TypeReference<?>>asList(),
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event TRANSFER_EVENT = new Event("Transfer", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}),
            Arrays.<TypeReference<?>>asList());
    ;

    public static final Event APPROVAL_EVENT = new Event("Approval", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}),
            Arrays.<TypeReference<?>>asList());
    ;

    public static final Event BIRTH_EVENT = new Event("Birth", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}),
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event CONTRACTUPGRADE_EVENT = new Event("ContractUpgrade", 
            Arrays.<TypeReference<?>>asList(),
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
    ;

    protected static final HashMap<String, String> _addresses;

    static {
        _addresses = new HashMap<String, String>();
        _addresses.put("5777", "0x2bc53d64083af85d91b4cd5f3294b6bdde44bfd2");
    }

    protected KittyCore(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    protected KittyCore(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public RemoteCall<TransactionReceipt> rescueLostKitty(BigInteger _kittyId, String _recipient) {
        final Function function = new Function(
                FUNC_RESCUELOSTKITTY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_kittyId), 
                new org.web3j.abi.datatypes.Address(_recipient)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<String> cfoAddress() {
        final Function function = new Function(FUNC_CFOADDRESS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<BigInteger> promoCreatedCount() {
        final Function function = new Function(FUNC_PROMOCREATEDCOUNT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<String> name() {
        final Function function = new Function(FUNC_NAME, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<TransactionReceipt> approve(String _to, BigInteger _tokenId) {
        final Function function = new Function(
                FUNC_APPROVE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_to), 
                new org.web3j.abi.datatypes.generated.Uint256(_tokenId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<String> ceoAddress() {
        final Function function = new Function(FUNC_CEOADDRESS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<Boolean> implementsERC721() {
        final Function function = new Function(FUNC_IMPLEMENTSERC721, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteCall<TransactionReceipt> setSiringAuctionAddress(String _address) {
        final Function function = new Function(
                FUNC_SETSIRINGAUCTIONADDRESS, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_address)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<BigInteger> totalSupply() {
        final Function function = new Function(FUNC_TOTALSUPPLY, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<String> siringAuction() {
        final Function function = new Function(FUNC_SIRINGAUCTION, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<TransactionReceipt> transferFrom(String _from, String _to, BigInteger _tokenId) {
        final Function function = new Function(
                FUNC_TRANSFERFROM, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_from), 
                new org.web3j.abi.datatypes.Address(_to), 
                new org.web3j.abi.datatypes.generated.Uint256(_tokenId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> setGeneScienceAddress(String _address) {
        final Function function = new Function(
                FUNC_SETGENESCIENCEADDRESS, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_address)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> setCEO(String _newCEO) {
        final Function function = new Function(
                FUNC_SETCEO, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_newCEO)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> setCOO(String _newCOO) {
        final Function function = new Function(
                FUNC_SETCOO, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_newCOO)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> createSaleAuction(BigInteger _kittyId, BigInteger _startingPrice, BigInteger _endingPrice, BigInteger _duration) {
        final Function function = new Function(
                FUNC_CREATESALEAUCTION, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_kittyId), 
                new org.web3j.abi.datatypes.generated.Uint256(_startingPrice), 
                new org.web3j.abi.datatypes.generated.Uint256(_endingPrice), 
                new org.web3j.abi.datatypes.generated.Uint256(_duration)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<BigInteger> gen0CreationLimit() {
        final Function function = new Function(FUNC_GEN0CREATIONLIMIT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<String> sireAllowedToAddress(BigInteger param0) {
        final Function function = new Function(FUNC_SIREALLOWEDTOADDRESS, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<Boolean> canBreedWith(BigInteger _matronId, BigInteger _sireId) {
        final Function function = new Function(FUNC_CANBREEDWITH, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_matronId), 
                new org.web3j.abi.datatypes.generated.Uint256(_sireId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteCall<BigInteger> tokensOfOwnerByIndex(String _owner, BigInteger _index) {
        final Function function = new Function(FUNC_TOKENSOFOWNERBYINDEX, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_owner), 
                new org.web3j.abi.datatypes.generated.Uint256(_index)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<String> kittyIndexToApproved(BigInteger param0) {
        final Function function = new Function(FUNC_KITTYINDEXTOAPPROVED, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<TransactionReceipt> createSiringAuction(BigInteger _kittyId, BigInteger _startingPrice, BigInteger _endingPrice, BigInteger _duration) {
        final Function function = new Function(
                FUNC_CREATESIRINGAUCTION, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_kittyId), 
                new org.web3j.abi.datatypes.generated.Uint256(_startingPrice), 
                new org.web3j.abi.datatypes.generated.Uint256(_endingPrice), 
                new org.web3j.abi.datatypes.generated.Uint256(_duration)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> setAutoBirthFee(BigInteger val) {
        final Function function = new Function(
                FUNC_SETAUTOBIRTHFEE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(val)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> approveSiring(String _addr, BigInteger _sireId) {
        final Function function = new Function(
                FUNC_APPROVESIRING, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_addr), 
                new org.web3j.abi.datatypes.generated.Uint256(_sireId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> setCFO(String _newCFO) {
        final Function function = new Function(
                FUNC_SETCFO, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_newCFO)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> createPromoKitty(BigInteger _genes, String _owner) {
        final Function function = new Function(
                FUNC_CREATEPROMOKITTY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_genes), 
                new org.web3j.abi.datatypes.Address(_owner)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<Boolean> paused() {
        final Function function = new Function(FUNC_PAUSED, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteCall<TransactionReceipt> withdrawBalance() {
        final Function function = new Function(
                FUNC_WITHDRAWBALANCE, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<String> ownerOf(BigInteger _tokenId) {
        final Function function = new Function(FUNC_OWNEROF, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_tokenId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<String> newContractAddress() {
        final Function function = new Function(FUNC_NEWCONTRACTADDRESS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<TransactionReceipt> setSaleAuctionAddress(String _address) {
        final Function function = new Function(
                FUNC_SETSALEAUCTIONADDRESS, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_address)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> breedWith(BigInteger _matronId, BigInteger _sireId) {
        final Function function = new Function(
                FUNC_BREEDWITH, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_matronId), 
                new org.web3j.abi.datatypes.generated.Uint256(_sireId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<BigInteger> balanceOf(String _owner) {
        final Function function = new Function(FUNC_BALANCEOF, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_owner)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<TransactionReceipt> pause() {
        final Function function = new Function(
                FUNC_PAUSE, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> giveBirth(BigInteger _matronId) {
        final Function function = new Function(
                FUNC_GIVEBIRTH, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_matronId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> withdrawAuctionBalances() {
        final Function function = new Function(
                FUNC_WITHDRAWAUCTIONBALANCES, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<String> symbol() {
        final Function function = new Function(FUNC_SYMBOL, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<BigInteger> cooldowns(BigInteger param0) {
        final Function function = new Function(FUNC_COOLDOWNS, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<String> kittyIndexToOwner(BigInteger param0) {
        final Function function = new Function(FUNC_KITTYINDEXTOOWNER, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<TransactionReceipt> transfer(String _to, BigInteger _tokenId) {
        final Function function = new Function(
                FUNC_TRANSFER, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_to), 
                new org.web3j.abi.datatypes.generated.Uint256(_tokenId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<BigInteger> gen0StartingPrice() {
        final Function function = new Function(FUNC_GEN0STARTINGPRICE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<String> cooAddress() {
        final Function function = new Function(FUNC_COOADDRESS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<BigInteger> autoBirthFee() {
        final Function function = new Function(FUNC_AUTOBIRTHFEE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<BigInteger> promoCreationLimit() {
        final Function function = new Function(FUNC_PROMOCREATIONLIMIT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<TransactionReceipt> createGen0Auction(BigInteger _genes) {
        final Function function = new Function(
                FUNC_CREATEGEN0AUCTION, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_genes)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<Boolean> isReadyToBreed(BigInteger _kittyId) {
        final Function function = new Function(FUNC_ISREADYTOBREED, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_kittyId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteCall<String> saleAuction() {
        final Function function = new Function(FUNC_SALEAUCTION, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<BigInteger> gen0AuctionDuration() {
        final Function function = new Function(FUNC_GEN0AUCTIONDURATION, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<TransactionReceipt> bidOnSiringAuction(BigInteger _sireId, BigInteger _matronId, BigInteger weiValue) {
        final Function function = new Function(
                FUNC_BIDONSIRINGAUCTION, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_sireId), 
                new org.web3j.abi.datatypes.generated.Uint256(_matronId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function, weiValue);
    }

    public RemoteCall<BigInteger> gen0CreatedCount() {
        final Function function = new Function(FUNC_GEN0CREATEDCOUNT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<String> geneScience() {
        final Function function = new Function(FUNC_GENESCIENCE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<TransactionReceipt> breedWithAuto(BigInteger _matronId, BigInteger _sireId, BigInteger weiValue) {
        final Function function = new Function(
                FUNC_BREEDWITHAUTO, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_matronId), 
                new org.web3j.abi.datatypes.generated.Uint256(_sireId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function, weiValue);
    }

    public static RemoteCall<KittyCore> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(KittyCore.class, web3j, credentials, gasPrice, gasLimit, BINARY, "");
    }

    public static RemoteCall<KittyCore> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(KittyCore.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, "");
    }

    public List<PregnantEventResponse> getPregnantEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(PREGNANT_EVENT, transactionReceipt);
        ArrayList<PregnantEventResponse> responses = new ArrayList<PregnantEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            PregnantEventResponse typedResponse = new PregnantEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.owner = (String) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.matronId = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.sireId = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<PregnantEventResponse> pregnantEventObservable(EthFilter filter) {
        return web3j.ethLogObservable(filter).map(new Func1<Log, PregnantEventResponse>() {
            @Override
            public PregnantEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(PREGNANT_EVENT, log);
                PregnantEventResponse typedResponse = new PregnantEventResponse();
                typedResponse.log = log;
                typedResponse.owner = (String) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse.matronId = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
                typedResponse.sireId = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
                return typedResponse;
            }
        });
    }

    public Observable<PregnantEventResponse> pregnantEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(PREGNANT_EVENT));
        return pregnantEventObservable(filter);
    }

    public List<AutoBirthEventResponse> getAutoBirthEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(AUTOBIRTH_EVENT, transactionReceipt);
        ArrayList<AutoBirthEventResponse> responses = new ArrayList<AutoBirthEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            AutoBirthEventResponse typedResponse = new AutoBirthEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.matronId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.cooldownEndTime = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<AutoBirthEventResponse> autoBirthEventObservable(EthFilter filter) {
        return web3j.ethLogObservable(filter).map(new Func1<Log, AutoBirthEventResponse>() {
            @Override
            public AutoBirthEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(AUTOBIRTH_EVENT, log);
                AutoBirthEventResponse typedResponse = new AutoBirthEventResponse();
                typedResponse.log = log;
                typedResponse.matronId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse.cooldownEndTime = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
                return typedResponse;
            }
        });
    }

    public Observable<AutoBirthEventResponse> autoBirthEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(AUTOBIRTH_EVENT));
        return autoBirthEventObservable(filter);
    }

    public List<TransferEventResponse> getTransferEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(TRANSFER_EVENT, transactionReceipt);
        ArrayList<TransferEventResponse> responses = new ArrayList<TransferEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            TransferEventResponse typedResponse = new TransferEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.from = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.to = (String) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.tokenId = (BigInteger) eventValues.getIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<TransferEventResponse> transferEventObservable(EthFilter filter) {
        return web3j.ethLogObservable(filter).map(new Func1<Log, TransferEventResponse>() {
            @Override
            public TransferEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(TRANSFER_EVENT, log);
                TransferEventResponse typedResponse = new TransferEventResponse();
                typedResponse.log = log;
                typedResponse.from = (String) eventValues.getIndexedValues().get(0).getValue();
                typedResponse.to = (String) eventValues.getIndexedValues().get(1).getValue();
                typedResponse.tokenId = (BigInteger) eventValues.getIndexedValues().get(2).getValue();
                return typedResponse;
            }
        });
    }

    public Observable<TransferEventResponse> transferEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(TRANSFER_EVENT));
        return transferEventObservable(filter);
    }

    public List<ApprovalEventResponse> getApprovalEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(APPROVAL_EVENT, transactionReceipt);
        ArrayList<ApprovalEventResponse> responses = new ArrayList<ApprovalEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            ApprovalEventResponse typedResponse = new ApprovalEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.approved = (String) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.tokenId = (BigInteger) eventValues.getIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<ApprovalEventResponse> approvalEventObservable(EthFilter filter) {
        return web3j.ethLogObservable(filter).map(new Func1<Log, ApprovalEventResponse>() {
            @Override
            public ApprovalEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(APPROVAL_EVENT, log);
                ApprovalEventResponse typedResponse = new ApprovalEventResponse();
                typedResponse.log = log;
                typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue();
                typedResponse.approved = (String) eventValues.getIndexedValues().get(1).getValue();
                typedResponse.tokenId = (BigInteger) eventValues.getIndexedValues().get(2).getValue();
                return typedResponse;
            }
        });
    }

    public Observable<ApprovalEventResponse> approvalEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(APPROVAL_EVENT));
        return approvalEventObservable(filter);
    }

    public List<BirthEventResponse> getBirthEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(BIRTH_EVENT, transactionReceipt);
        ArrayList<BirthEventResponse> responses = new ArrayList<BirthEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            BirthEventResponse typedResponse = new BirthEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.kittyId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.matronId = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.sireId = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.genes = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<BirthEventResponse> birthEventObservable(EthFilter filter) {
        return web3j.ethLogObservable(filter).map(new Func1<Log, BirthEventResponse>() {
            @Override
            public BirthEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(BIRTH_EVENT, log);
                BirthEventResponse typedResponse = new BirthEventResponse();
                typedResponse.log = log;
                typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue();
                typedResponse.kittyId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse.matronId = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
                typedResponse.sireId = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
                typedResponse.genes = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
                return typedResponse;
            }
        });
    }

    public Observable<BirthEventResponse> birthEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(BIRTH_EVENT));
        return birthEventObservable(filter);
    }

    public List<ContractUpgradeEventResponse> getContractUpgradeEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(CONTRACTUPGRADE_EVENT, transactionReceipt);
        ArrayList<ContractUpgradeEventResponse> responses = new ArrayList<ContractUpgradeEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            ContractUpgradeEventResponse typedResponse = new ContractUpgradeEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.newContract = (String) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<ContractUpgradeEventResponse> contractUpgradeEventObservable(EthFilter filter) {
        return web3j.ethLogObservable(filter).map(new Func1<Log, ContractUpgradeEventResponse>() {
            @Override
            public ContractUpgradeEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(CONTRACTUPGRADE_EVENT, log);
                ContractUpgradeEventResponse typedResponse = new ContractUpgradeEventResponse();
                typedResponse.log = log;
                typedResponse.newContract = (String) eventValues.getNonIndexedValues().get(0).getValue();
                return typedResponse;
            }
        });
    }

    public Observable<ContractUpgradeEventResponse> contractUpgradeEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(CONTRACTUPGRADE_EVENT));
        return contractUpgradeEventObservable(filter);
    }

    public RemoteCall<TransactionReceipt> setNewAddress(String _v2Address) {
        final Function function = new Function(
                FUNC_SETNEWADDRESS, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_v2Address)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<Tuple10<Boolean, Boolean, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger>> getKitty(BigInteger _id) {
        final Function function = new Function(FUNC_GETKITTY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}, new TypeReference<Bool>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        return new RemoteCall<Tuple10<Boolean, Boolean, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger>>(
                new Callable<Tuple10<Boolean, Boolean, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger>>() {
                    @Override
                    public Tuple10<Boolean, Boolean, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple10<Boolean, Boolean, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger>(
                                (Boolean) results.get(0).getValue(), 
                                (Boolean) results.get(1).getValue(), 
                                (BigInteger) results.get(2).getValue(), 
                                (BigInteger) results.get(3).getValue(), 
                                (BigInteger) results.get(4).getValue(), 
                                (BigInteger) results.get(5).getValue(), 
                                (BigInteger) results.get(6).getValue(), 
                                (BigInteger) results.get(7).getValue(), 
                                (BigInteger) results.get(8).getValue(), 
                                (BigInteger) results.get(9).getValue());
                    }
                });
    }

    public RemoteCall<TransactionReceipt> unpause() {
        final Function function = new Function(
                FUNC_UNPAUSE, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public static KittyCore load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new KittyCore(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    public static KittyCore load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new KittyCore(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    protected String getStaticDeployedAddress(String networkId) {
        return _addresses.get(networkId);
    }

    public static String getPreviouslyDeployedAddress(String networkId) {
        return _addresses.get(networkId);
    }

    public static class PregnantEventResponse {
        public Log log;

        public String owner;

        public BigInteger matronId;

        public BigInteger sireId;
    }

    public static class AutoBirthEventResponse {
        public Log log;

        public BigInteger matronId;

        public BigInteger cooldownEndTime;
    }

    public static class TransferEventResponse {
        public Log log;

        public String from;

        public String to;

        public BigInteger tokenId;
    }

    public static class ApprovalEventResponse {
        public Log log;

        public String owner;

        public String approved;

        public BigInteger tokenId;
    }

    public static class BirthEventResponse {
        public Log log;

        public String owner;

        public BigInteger kittyId;

        public BigInteger matronId;

        public BigInteger sireId;

        public BigInteger genes;
    }

    public static class ContractUpgradeEventResponse {
        public Log log;

        public String newContract;
    }
}
